import {Message} from 'element-ui'
import axios from 'axios'
// axios 的基本的封装的方法
axios.defaults.baseURL = 'http://localhost:8090'
/**
 * 功能描述：Http Request 拦截器
 */
axios.interceptors.request.use((config) => {
  return config
}, (error) => {
  Message.error(`请求参数错误`, 10)
  return Promise.reject(error)
})

/**
 * 功能描述：Http Response 拦截器
 */
axios.interceptors.response.use((res) => {
  let isTips = res.config && (res.config.showMessage === undefined || res.config.showMessage === true)

  if (res.status !== 200) {
    isTips && Message.error(`请求异常：${res.message}`, 10)
    return Promise.reject(res)
  } else {
    if (res.data.code !== 200 && res.data.code !== 'success') {
      isTips && Message.error(`服务器返回异常：${res.data.message}`, 10)
      return Promise.reject(res)
    } else {
      return Promise.resolve(res.data)
    }
  }
}, (error) => {
  Message.error(`服务器返回异常：${error}`, 10)
  return Promise.reject(error)
})

export default {
  get (url, params, config) {
    let configObj = {}
    if (config !== undefined) {
      Object.assign(configObj, config)
    }
    if (params !== undefined) {
      configObj['params'] = params
    }
    return axios.get(url, configObj)
  },
  delete (url, params, config) {
    let configObj = {}
    if (config !== undefined) {
      Object.assign(configObj, config)
    }
    if (params !== undefined) {
      configObj['params'] = params
    }
    return axios.delete(url, configObj)
  },
  post (url, data, config) {
    return axios.post(url, data, config)
  },
  put (url, data, config) {
    return axios.put(url, data, config)
  },
  patch (url, data, config) {
    return axios.patch(url, data, config)
  }
}
